#pragma once
class CMove
{
public:
    CMove();
    ~CMove();

    uint GenAll( CBoard * board, CMoveList * list, uint color );
    uint GenAll( CBoard * board, CMoveList * list );

    uint GenCaptures( CBoard * board, CMoveList * list, uint color );
    uint GenCaptures( CBoard * board, CMoveList * list );

    uint Do( CBoard * board, uint move );
    uint Undo( CBoard * board, uint move );

    uint GenPawn( CBoard * board, CMoveList * list, uint from );
    uint GenPawnQuiescence( CBoard * board, CMoveList * list, uint from );

    uint GenSlider( CBoard * board, CMoveList * list, uint from );
    uint GenSliderQuiescence( CBoard * board, CMoveList * list, uint from );
    
    uint SavePromo( CBoard * board, CMoveList * list, uint from, uint to );
    uint SavePromoQuiescence( CBoard * board, CMoveList * list, uint from, uint to );
    uint GenCastles( CBoard * board, CMoveList * list, uint color );
    uint ToString( uint move, char s[256]);
};

